(function () {


    // 描述一个对象的类型
    type myType = {
        name: string,
        age: number,
        gender: string
        // [propname:string]:any
    }

    /*  ***** 接口
        接口用来定义一个类的结构 用来定义一个类中应该定义哪些属性和方法
        同时接口也可以当成类型声明去使用

        合并使用
    */

    interface myInterface {
        name: string,
        age: number,
    }

    interface myInterface {
        gender: string
    }

    const obj: myInterface = {
        name: '张三',
        age: 18,
        gender: ""
    }

    /* 
        接口可以定义类的时候去限制类的结构
        接口只定义对象的结构，而不考虑实际值
        接口中的所有方法都是抽象方法
    */

    interface myInter {
        name: string;
        sayHello(): void;
    }

    // 实现接口
    class MyClass implements myInter {
        name: string;
        constructor(name: string) {
            this.name = name;
        }
        sayHello(): void {
            throw new Error("Method not implemented.")
        }
    }
})()